#include<poll.h>
#include<unistd.h>
#include<stdio.h>
//和select 一样 poll返回后 需要轮询pollfd来获取描述符
//每次调用poll 都需要把大量的poll结构从用户态拷贝到内核中
//同时连接的大量客户端在一时刻可能只有很少的处于就绪状态, 因此随着监视的描述符数量的增长, 其效率也会线性下降
int main()
{
    struct pollfd poll_fd;
    poll_fd.fd=0;
    poll_fd.events=POLLIN;

    while(1)
    {
        int ret=poll(&poll_fd,1,1000);
        if(ret<0)
        {
            perror("poll_error");
            continue;
        }
        else if(ret==0)
        {
            printf("poll timeout\n");
            continue;
        }   
        else if(poll_fd.events==POLLIN)
        {
            char buf[1024]={0};
            read(0,buf,sizeof(buf)-1);
            printf("stdin:%s\n",buf);
        }
    }
    return 0;
}